// express 的依赖项

// 执行依赖
var dependencies = {
    // Higher level content negotiation based on negotiator. Extracted from koa for general use.
    // 用来获取 req 可以接收的数据类型，比如 ['text/html', 'application/json']
    "accepts": "~1.3.3",  
    // Flatten nested arrays.
    // 顾名思义，就是用于摊平数组的。
    "array-flatten": "1.1.1",
    // create and parse HTTP Content-Disposition header
    // Content-Disposition 属性是作为对下载文件的一个标识字段，一般都是设置在 response.headers 中，值为要下载的文件的位置
    "content-disposition": "0.5.2",
    // Create and parse HTTP Content-Type header according to RFC 7231
    // 可以创建并解析 HTTP Headers 中的 Content-Type ，包括 req 和 res
    "content-type": "~1.0.2",
    // Basic HTTP cookie parser and serializer for HTTP servers.
    // 基础的 http cookie 解析和序列化
    "cookie": "0.3.1",
    // Sign and unsign cookies.
    // 用于给 cookies 加密和解密
    "cookie-signature": "1.0.6",
    // A tiny JavaScript debugging utility modelled after Node.js core's debugging technique. Works in Node.js and web browsers.
    // 基于node核心模块debug的一个实用模型。 windows环境下应用方法在readme.md下方。
    "debug": "2.6.8",
    // Deprecate all the things.With great modules comes great responsibility; mark things deprecated!
    // 废弃所有的东西。 是用来声明某个接口或者方案已经废弃了的.
    "depd": "~1.1.1",
    // Encode a URL to a percent-encoded form, excluding already-encoded sequences.
    // 用来对一个url进行编码。一个安全的编码方案。
    "encodeurl": "~1.0.1",
    // Escape string for use in HTML
    // 其实就是把html中非ASCII字符的编码进行编码，比如 escape('foo & bar') === foo &amp; bar 
    "escape-html": "~1.0.3",
    // Create simple HTTP ETags. This module generates HTTP ETags (as defined in RFC 7232) for use in HTTP responses.
    // 用来创建简单的http etag.
    "etag": "~1.8.0",
    // Node.js function to invoke as the final step to respond to HTTP request.
    // 用于做http request的最后一步的回复。默认返回404或者err
    "finalhandler": "~1.0.4",
    // HTTP response freshness testing
    // 检查http的response是否未改变。 其实就是检查 if-none-match 和 etag 是否相同。
    "fresh": "0.5.0",
    // Merge objects using descriptors.
    // 用来合并两个对象的描述符。即使是get和set也可以。
    "merge-descriptors": "1.0.1",
    // HTTP verbs that Node.js core's HTTP parser supports.
    // 用来为http动词提供node核心模块的解析支持。
    "methods": "~1.1.2",
    // Execute a callback when a HTTP request closes, finishes, or errors.
    // 在一个http request结束或者报错的时候执行一个回调。
    "on-finished": "~2.3.0",
    // Parse a URL with memoization.
    // 一个有缓存机制的URL解析模块。
    "parseurl": "~1.3.1",
    // urn a path string such as /user/:name into a regular expression.
    // 把一个路由字符串转化为一个正则表达式。
    "path-to-regexp": "0.1.7",
    // Determine address of proxied request
    // 判断一个代理的请求是否合法
    "proxy-addr": "~1.1.5",
    // A querystring parsing and stringifying library with some added security.
    // 一个添加了安全处理的查询字符串解析和串接的库。
    "qs": "6.5.0",
    // Range header field parser. Parse the given header string where size is the maximum size of the resource. 
    // 用于请求头中的(数字、大小)范围类型的字段的解析。给定的size会作为最大的值。  例如： parseRange(100, 'bytes=50-55,0-10,5-10,56-60', { combine: true }) 会被解析为： bytes = [ {start: 0, end: 10 }, { start: 50, end: 60 }]
    "range-parser": "~1.2.0",
    // Send is a library for streaming files from the file system as a http response supporting partial responses
    // 是一个用来发送文件的库。
    "send": "0.15.4",
    // 是一个提供静态文件支持的库
    "serve-static": "1.12.4",
    // Polyfill for Object.setPrototypeOf
    // 作为Object.setPrototypeOf的兼容版本
    "setprototypeof": "1.0.3",
    // HTTP status utility for node.
    // node的HTTP status工具
    "statuses": "~1.3.1",
    // Infer the content-type of a request.
    // 判断一个request的content-type
    "type-is": "~1.6.15",
    // Merges the properties from a source object into a destination object.
    // 一个用于对象合并的工具
    "utils-merge": "1.0.0",
    // Manipulate the HTTP Vary header
    // 用来设置http的vary header。这个header主要是用来控制页面向代理服务器请求的页面是否是经过压缩的。
    "vary": "~1.1.1"
};

// 开发依赖
var devDependencies = {
    // Invoke callback after n calls
    // 在n个执行之后调用回调函数，或者在next(err)后立即执行错误处理函数。和async的流程控制类似，不过这个会一直处理错误。
    "after": "0.8.2",
    // Node.js body parsing middleware
    // node.js的body解析中间件
    "body-parser": "1.17.2",
    // connect-redis is a Redis session store backed by node_redis, and is insanely fast :). 
    // 是一个redis session(会话)后端缓存模块，并且非常的快。
    "connect-redis": "~2.4.1",
    // Parse Cookie header and populate req.cookies with an object keyed by the cookie names.
    // 根据名字把 cookie header 解析为一个对象的形式，填入到 req.cookies 里面
    "cookie-parser": "~1.4.3",
    // Simple cookie-based session middleware.
    // 简单的基于 cookie 的 session 中间件。
    "cookie-session": "1.3.0",
    // Embedded JavaScript templates
    // 嵌入式的 js 模板
    "ejs": "2.5.7",
    // ESLint is a tool for identifying and reporting on patterns found in ECMAScript / JavaScript code.
    // ESLint 是一个用于模式识别和报告的 ES 代码分析工具。
    "eslint": "2.13.1",
    // session 中间件
    "express-session": "1.15.5",
    // Express.js view engine for handlebars.js
    // 一个视图引擎
    "hbs": "4.0.1",
    // a JS code coverage tool written in JS
    // 一个用 JS 写的 JS 代码覆盖率测试工具
    "istanbul": "0.4.5",
    // A full-featured markdown parser and compiler, written in JavaScript. Built for speed.
    // 一个用 JS 写的有全部特色支持的 markdown 解析和编译方案。追求速度之作。
    "marked": "0.3.6",
    // Lets you use HTTP verbs such as PUT or DELETE in places where the client doesn't support it.
    // 让我们在客户端不支持的地方也能使用类似 PUT 和 DELETE 的 HTTP 动词。
    "method-override": "2.3.9",
    // Mocha is a simple, flexible, fun JavaScript test framework for node.js and the browser. 
    // Mocha 是一个简单、灵活、有趣的 JS 测试框架，可以用于 node.js 和 浏览器。
    "mocha": "3.5.0",
    // HTTP request logger middleware for node.js
    // node.js 的 HTTP 请求日志中间件
    "morgan": "1.8.2",
    // Parse http requests with content-type multipart/form-data, also known as file uploads.
    // 解析 content-type 是 multipart/form-data(或者被称为文件上传) 类型的请求。
    "multiparty": "4.1.3",
    // Easy salt/password creation for Node.js, extracted from Mosca.
    // 一个简单的生成加密密码的 node.js 模块，从 Mosca 中提取出来的。
    "pbkdf2-password": "1.2.1",
    // should is an expressive, readable, framework-agnostic assertion library.
    // should 是一个有表现力的，可读性强的，框架无关的断言测试库。
    "should": "11.2.1",
    // HTTP assertions made easy via superagent.
    // 使用 superagent 把 HTTP 断言实现得很容易。
    "supertest": "1.2.0",
    // virtual domain hosting
    // 虚拟域名主机 ？？？
    "vhost": "~3.0.2"
};